PHLEGM v8 - Checkpoint 33: persistent rolling good-build history

Data-driven N: tools/Compiler-UI.json -> progress.knownDuration.goodBuildHistoryCount (default 5).
Only completed successful builds append duration samples to the persisted oldest-to-newest array.
The list is capped at the last N successes; intervening failures and cancellations are ignored.
An unsuccessful build still updates previousState for diagnostics, but never resets the
average, never discards a sample, and never selects Unknown Duration solely because
of the previous build result.
If at least one good sample is present, Duration, ETA and known-duration progress
always use the rolling mean of the most recent N successful samples.
Unknown Duration is the fallback only if the history is empty.
Persisted history is restored even if previousState=failed or cancelled.
The active build uses a snapshot of that mean and does not modify it mid-build.
This patch is shared/project-neutral. No Python scripts are shipped.
Validation: static source and archive checks; native PowerShell execution pending.
